![Alteryxでマクロを作成する](https://devio2023-media.developers.io/wp-content/uploads/2014/10/alteryx.png)
Alteryxでマクロを作成する
こんにちは、小澤です。
以前、AlteryxでAnalytic Appというものが作成できることを紹介しました。
Alteryxではこれと似たようなやりかたでマクロというものも作成できます。 今回はそのマクロを作る方法を紹介したいと思います。
マクロとは
Alteryxのマクロとはどういったものなのでしょうか? ワークフローを作成していると、何度も同じような処理を複数のツールを組み合わせて実現することがあります。 そういった、頻繁に利用するけど単一のツールで実現できるわけでは一連の処理をまとめた新たなツールを作成するのがマクロになります。
例として、以下のようなワークフローで考えてみます。
このワークフローでは
- csvファイルの読み込み
- フィールドの型を自動判定
- 必要なカラムのみを抽出
- 特定のフィールドでソート
- 出力
という処理を行っています。 今回の例ではBrowseツールで出力しているのみですが、実際のワークフローではここでの4までの処理を行ったデータに対して、さらに様々な処理を行っていくことになるかと思います。
入力がRDBなどであればこれらの操作はデータ取得時のSQLでも実現可能ですが、今回のようなcsvファイルを読み込む場合には頻繁に利用するような処理になるかと思います。
このワークフローの2〜4の処理をマクロ化したワークフローが以下のようになります。
真ん中にある1つのツールで先ほどの複数のツールの役割を実現しています。
マクロには独自のアイコンを設定することができ、今回はいらすとやにある「洋式便器の使い方のイラスト(棒人間)」うち、間違った使い方のものを設定しています。 設定するアイコンは41x41pxであればどんなものでも可能ですが、どのような処理を行うツールなのかわかりやすいものを設定するといいでしょう(※ 今回はこのアイコンであることに特に意味はありません)
マクロは通常の他のツールと同様、設定を行うことが可能です。
Selectで抽出するフィールド、ソートに利用するフィールド、ソートの昇順/降順を選択できるようにしています。 これらの設定項目もマクロ作成者が作成することになります。
マクロを作成する
では、上記の例で紹介した処理を実現するマクロを実際に作成してみましょう。 マクロは特殊ものではなく、それ自体もワークフローとして作成します。
作成するマクロの全体像は以下のようになっています。
インターフェースツールを多用していますが、Auto Fieldツール, Selectツール, Sortツールを利用した基本的な流れは最初に示した各ツールを使った処理と変わっていません。 そのため、部分に関する解説は割愛します。
マクロの入出力
まずは、入出力部分を見ていきましょう
マクロでは、Macro Inputツールを利用することで、ワークフロー上の直前のツールからの入力を受け取ることができます。 今回の例では、1つのみですがこのツールを複数配置することで、複数の入力コネクタを持つマクロを作成することもできます。 また、Macro Inputツールを利用しないことで入力を受け付けないマクロを作成することも可能です。例えば今回の例で使用しているようなマクロでcsvファイルの入力もマクロ内に含めてしまうような変更をする場合、Macro Inputツールは必要なくなります。
Macro Inputツールにはいくつかの設定項目があります。
最初の「Template Input」は適当な入力を設定しておく項目になります。 Input DataツールやText Inputツールと同様なインターフェースで値を入力しておきます。
この部分で設定した値は、マクロを通常のワークフローとして実行した時に利用されるデータになります。 実際にマクロとして利用された際には使われないデータですが、マクロ作成時の動作確認やデバッグなどの利便性を考えると実際に想定されるようなデータを選んでおくといいでしょう。
Input Nameでは、このツールに名前をつけることができます。
Anchor Abbriviationでは、入力のコネクション接続部分に表示する文字を設定できます。 複数の入力を持つマクロを作成する際にどのコネクタがどの入力に対応しているのかを識別するのに利用できます。 実際複数の入力を持つツールをいくつか見てもらうと、それらにも1文字の名前がつけられているのがわかるかと思います。
Show Field Mapは、Templateで指定した入力の各フィールドと実際に利用した際の入力データのフィールド間での対応付けを行いたい場合に利用するものになります。 こちらにチェックを入れると、マクロの設定でそれらに対するフィールドを指定する項目が追加されます。 マクロの内容が処理対象のフィールド数や型が決まったものしか受け付けないようなものを作る際に利用できます。
Optional Incoming Connectionはこの入力が必須ではなく、オプションとして入力するものの場合にチェックを入れます。
Macro Outputツールは、マクロ内での処理結果を次のツールに渡すために利用するものになります。 こちらも複数配置することによって、複数の出力を行うことが可能です。 Macro Outputツールは設定項目は名前とコネクションに表示する文字のみとなっています。
インターフェースツール
続いて、インターフェースツールの設定になります。
これらのインターフェースツールがマクロ利用時の設定項目となります。
まずは左上のList Boxツールから見ていきます。
このツールでは、複数項目選択可能なチェックボックスを用意するものになります。 今回の場合だと、マクロの設定のうち以下の部分に当たります。
このList Boxツールには上部と下部の2箇所に接続されています。
上部の接続はMacro Inputツールに接続されています。 これは何をしているかというと、リストに表示される項目となる値をマクロに入力されたものにしています。 これによって、入力されたデータのフィールド名が各項目として表示されます。 マクロを利用する際に入力ファイルを変えるとここで表示される項目も変更されるのが確認できるかと思います。
下側の接続はActionツールにつながっています。
Actionツールは、上部に接続されたインターフェースの値で、下部のツールの設定を書き換えるという動作をするためのものになります。 Actionツールの設定は、様々なものがあり接続されたツールによって項目が異なったりするので全てを解説することはしません。
今回の場合ですと、どのような操作を行うかを「Select an Action Type」で選択しているのみとなります。
これによって、Selectツールでの各フィールドのチェックの有無を設定から指定したものに丸々置き換えています。
真ん中のDropDownツールもやっていることはほぼ同じです。
こちらはドロップダウン形式でいずれか1つを選択するものになりますが、そのリストは同様にマクロの入力から受け取っています。 Actionツールを使って、Sortツールで利用するフィールドを受け取った値に変更しています。
Actionツール側は先ほどとは設定が異なっており、Updata Valueで変更する値を選択しています。 Sortツールはソートに利用するフィールドと並べ順を複数指定しますが、今回の場合は1つのみなので、その1つの値のうちソートに利用するフィールドを下部の「Value or Attribute to Update」で指定しています。
右側もほぼ同様となっており、こちらはDropDownで並べ順指定の変更を行うものになっています。 ここでは、手動でAscencoding(昇順), Descencoding(降順)の2項目を設定しています。
インターフェースの設定
今回は変更は行いませんが、設定項目の配置などを変更するにはAnalytic Appと同様、Interface Designerを利用できます。 また、Interface Designerの左側メニューの一番下にあるスパナアイコンでマクロに関する設定も行えます。
マクロのアイコンの設定などもここで行えます。
マクロを利用する
さて、次に作成したマクロを利用します。
作成したマクロを利用するには、ワークフロー上で 右クリック > Insert > Macro > Browse.. と選択しています。 作成中のマクロを開いているAlteryx上で開いている状態など、Browse..と並んで表示されている場合もあります。
ファイル選択画面が表示されるので、作成したマクロを選択してやればワークフロー上に配置されます。
また、作成したマクロを他のツールと同様、上部のツールリストに表示させることも可能です。 メニューから Options > User Settings > Edit User Settings を開いて、Macrosタブでマクロを入れるためのパスを指定してやれば、新たにタブが追加されその中に含まれるマクロが表示されるようになります。
以下では、今回作成したマクロの入ったディレクトリを「Macros」というカテゴリ名で登録してます。
これによってツール一覧にタブが追加され、作成したマクロが表示されていることが確認できます。
なお、カテゴリ名はマクロスとはなんら関係ありません(あちらの表記はmacrossのようです)が、私はFのランカ派です。
マクロの使いどころ
最後に、どのような場面でマクロを作成すると便利かという点に簡単にあげておきます。
- 頻繁に使うツールの組み合わせを1つのマクロにしてしまう
- 組織内で決まった手順や数値の定義などがあるような場合にそれを算出する処理をマクロ化してAlteryx Serverで共有する
- Alteryx上のツールで実装されていない分岐手法をRツールを使ったマクロで実装する
といったものがあげられるかと思います。
終わりに
今回は、Alteryxでマクロを作る方法を紹介しました。
Alteryxにおけるマクロはワークフローからは他のツールと同様に利用可能なものです。 自分で作ろうと思うとハードルが高いように感じられる方もいるかもしれません。
Alteryxは複合的な処理を1つのツールでやってしまうというより、 基本的な機能を持つツールをうまく組み合わせることで複雑なことでも実現できるような仕組みになっています。
分析系のツールなど複雑なことを行っているように見えるツールでも実はマクロとして実装されており、内部的には基本的なツールの組み合わせというものも少なくありません。 そのため、まずは頻繁につかう定型的な前処理などまとめたマクロを作成するなど、比較的簡単な部分からから始めてみると便利と感じられるのではないかと思います。